﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static 战斗系统原型.角色;

namespace 战斗系统原型.数值处理.战斗.增益效果
{
    internal class 死亡延迟
    {
        public static int 概率值 { get; set; } = 30;
        public static void 被物理攻击(角色 攻击角色, 角色 被攻击角色, 战场属性 战场, 攻击属性 属性, float 攻击数值)
        {
            var 物理防御力 = 被攻击角色.物防力 + 被攻击角色.物防力附加;
            float 最终造成伤害 = 0;
            if (物理防御力 != 0) { 最终造成伤害 = (int)Math.Ceiling(攻击数值 / 物理防御力); }
            else { 最终造成伤害 = (int)Math.Ceiling(攻击数值); }
            被攻击角色.生命值 -= 最终造成伤害;
            战场.日志.Add($"{被攻击角色.角色名称} 被造成了{最终造成伤害}点物理伤害 ！");
            被攻击角色.检测角色死亡(被攻击角色, 战场);
        }

        public static void 检测角色死亡(角色 角色, 战场属性 战场)
        {
            if (角色.生命值 <= 0)
            {
                if (概率死亡判定(概率值))
                {
                    角色.角色状态 = 状态.濒死;
                    if (战场.队伍数据 == null) { return; }
                    战场.重新计算行动!(战场, 战场.队伍数据);
                    战场.日志.Add($"{角色.角色名称} 进入濒死状态，无法行动");
                }
            }
        }

        public static bool 概率死亡判定(int 死亡概率)
        {
            
            Random 随机值 = new Random();
            var 判定值 = 随机值.Next(0, 100);
            if (判定值 <= 死亡概率) 
            {
                return true;
            }
            return false;
        }
    }
}
